home *** CD-ROM | disk | FTP | other *** search
- MAKESIZ EQU 8192
- CUTSPAC EQU 1024 ; 16384 / 16
- ASSUME CS:MAKEC,DS:MAKEC,ES:MAKEC,SS:MAKEC
- MAKEC SEGMENT PARA PUBLIC 'CODE'
-
- INCLUDE UTIL.INC
-
- ORG 100H
- MAKE:
- MOV SP,CUTSPAC*16
- MOV BX,CUTSPAC
- CALL SHRINKSPACE
- CALL GETSWITCH
- MOV COMMSTR[1],DL
- MOV DX,OFFSET MAKENAM
- MOV AL,0
- CALL OPEN
- MOV BX,AX
- ;read the file into the buffer
- MOV CX,MAKESIZ
- MOV DX,OFFSET MAKEBUF
- CALL READ
- MOV CX,AX
- CALL CLOSE
- MOV SI,OFFSET MAKEBUF
- LODSB
- DEC CX
- START: ;while not end of file do
- CALL WHILEWHITE
- CMP CX,0
- JG NXT3
- JMP NORMAL
- NXT3: ; parse up to the colon
- MOV DI,OFFSET NAMEBUF
- CALL WHILEBLACK
- MOV BYTE PTR [DI-1],NUL
- ; if file exists then read date else goto domake
- XCHG AX,BX
- MOV DX,OFFSET NAMEBUF
- MOV AL,0
- MOV AH,3DH
- INT 21H
- XCHG AX,BX
- JC DOMAKE
- PUSH CX
- PUSH AX
- CALL GETDATE
- MOV MADEDAT[0],CX
- MOV MADEDAT[2],DX
- CALL CLOSE
- POP AX
- POP CX
- CALL WHILEWHITE
- DOFILE: ; while parse a filename do
- CMP AL,'<'
- JE SKIPMAKE
- MOV DI,OFFSET NAMEBUF
- CALL WHILEBLACK
- ; read date
- PUSH AX
- MOV DX,OFFSET NAMEBUF
- MOV AL,0
- CALL OPEN
- PUSH CX
- MOV BX,AX
- CALL GETDATE
- CALL CLOSE
- LES DI,DWORD PTR MADEDAT
- CALL CMPDATE
- PUSH DS
- POP ES
- POP CX
- POP AX
- JB DOMAKE
- ; loop
- CALL WHILEWHITE
- JMP DOFILE
- DOMAKE: ; skip to where the @ is the first character on the line
- CMP AL,'<'
- JE NXT4
- LODSB
- DEC CX
- JMP DOMAKE
- NXT4: LODSB
- DEC CX
- CALL WHILEWHITE
- DOPARS: ; while first of line <> '>' do
- CMP AL,'>'
- JE NXT5
- ; parse to the end of line
- MOV DI,OFFSET NAMEBUF
- NXT6: CMP AL,LF
- JE NXT7
- STOSB
- LODSB
- DEC CX
- JMP NXT6
- NXT7: ; print the line
- MOV BYTE PTR [DI],NUL
- MOV BX,STDOUT
- MOV DX,OFFSET NAMEBUF
- CALL FWRITESTR
- ; execute command.com with the line as the parameter
- MOV DX,DI
- SUB DX,OFFSET COMMSTR + 2
- MOV COMMSTR[0],DL
- MOV DX,OFFSET COMMSTR
- CALL EXECOMM
- CALL WHILEWHITE
- JMP DOPARS
- SKIPMAKE:
- CMP AL,'>'
- JE NXT5
- LODSB
- DEC CX
- JMP SKIPMAKE
- NXT5:
- LODSB
- DEC CX
- JMP START
-
- ASSUME CS:MAKEC,DS:MAKEC,ES:MAKEC,SS:MAKEC
-
- MWHILEWHITE MACRO
- LOCAL NXT2
- WHILEWHITE:
- CMP AL,' '
- JE NXT2
- CMP AL,CR
- JE NXT2
- CMP AL,LF
- JE NXT2
- CMP AL,TAB
- JE NXT2
- RET
- NXT2: ; STOSB
- LODSB
- DEC CX
- JMP WHILEWHITE
- ENDM
-
- MWHILEBLACK MACRO
- LOCAL NXT2
- WHILEBLACK:
- CMP AL,' '
- JE NXT2
- CMP AL,CR
- JE NXT2
- CMP AL,LF
- JE NXT2
- CMP AL,TAB
- JE NXT2
- STOSB
- LODSB
- DEC CX
- JMP WHILEBLACK
- NXT2: MOV BYTE PTR [DI],NUL
- RET
- ENDM
-
- MWHILEWHITE
- MWHILEBLACK
-
- MNORMAL
- MWRITESTR
- MWRITELN
- MERROR
- MCMPDATE
- MSHRINKSPACE
- MOPEN
- MCLOSE
- MREAD
- MGETDATE
- MEXECOMM
- MGETSWITCH
-
- MAKENAM DB 'MAKEFILE',0
- COMMSTR DB 0,'/C '
- NAMEBUF DB 64 DUP (?)
- EVEN
- MADEDAT DW 2 DUP (?)
- MAKEBUF DB
-
- MAKEC ENDS
- END MAKE